package com.dd.cloud.user.service.doctor;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dd.cloud.user.entity.doctor.DoctorDetail;
import com.dd.cloud.user.req.doctor.*;
import com.dd.cloud.user.res.doctor.*;

import java.util.List;

/**
 * <p>
 * 医生详情表 服务类
 * </p>
 *
 * @author czg
 * @since 2022-04-27
 */
public interface IDoctorDetailService extends IService<DoctorDetail> {
    /**
     * 查询医生详细信息
     *
     * @param docId 医生账号ID
     * @return
     */
    DoctorDetailRes queryDoctorDetail(Integer docId);

    /**
     * 添加医生资料
     *
     * @param req
     */
    void addDoctorDetail(DoctorCreateReq req);

    /**
     * 修改医生资料
     *
     * @param req
     */
    void updateDoctorDetail(DoctorDetailUpdateReq req);

    /**
     * 修改医生资料 内部service调用
     *
     * @param dd
     */
    void updateDoctorDetail(DoctorDetail dd);

    /**
     * 修改医生资料 自定义参数
     *
     * @param req
     */
    void updateDoctorDetailUpdateOpt(DoctorDetailUpdateOptReq req);

    /**
     * 注册医生账号 生成初始资料
     *
     * @param req
     */
    void registryDoctorUser(DoctorRegistryReq req);

    /**
     * 查询医生id以及名称 下拉列表专用
     *
     * @param keyword
     * @return
     */
    List<DoctorUserSelectRes> queryDoctorUserSelect(String keyword);

    /**
     * 删除医生详情
     *
     * @param docId
     */
    void delDoctorDetail(Integer docId);

    /**
     * 查询互联网医院备案信息
     *
     * @param internetDoctorReq
     * @return IPage<InternetDoctorRes>
     */
    IPage<InternetDoctorRes> queryDoctorPage(InternetDoctorReq internetDoctorReq);

    /**
     * 获取是否推送
     *
     * @param doctorId
     */
    Integer getIsPush(Integer doctorId);

    /**
     * 获取医生小程序二维码
     *
     * @param doctorId
     * @return String
     */
    String getDoctorQr(String page, String param, Integer doctorId);

    /**
     * 获取患者公众号二维码
     *
     * @return
     */
    String getPatientGZHWxQr(Integer docId, String param);

    /**
     * 推送医生监管平台
     *
     * @param doctorIds
     */
    void pushInternetDoctor(List<Integer> doctorIds);

    /**
     * 医生咨询问诊的详情
     */
    DoctorConsultDetailRes consultDoctorDetail(Integer doctorId);

    /**
     * 查询互联网医生审核列表
     *
     * @param doctorInternetApplyReq
     * @return IPage<InternetDoctorRes>
     */
    IPage<InternetDoctorApplyRes> queryInternetDoctorPage(DoctorInternetApplyReq doctorInternetApplyReq);

    /**
     * 获取机构名
     *
     * @param doctorId
     */
    String getDoctorMechanName(Integer doctorId);

    /**
     * 医生名字
     *
     * @param doctorId
     * @return String
     */
    String getDoctorName(Integer doctorId);

    /**
     * 查询积分列表
     *
     * @param doctorIntegralReq
     * @return
     */
    List<DoctorIntegraRes> queryIntegralList(DoctorIntegralReq doctorIntegralReq);

    /**
     * 查询需要上传到监管平台的医生数据
     */
    List<DoctorDetail> getSuperviseDoctorList();

    /**
     * 发送数据到监管平台
     */
    void sendDocDataToSupervise();
}
